#!/usr/bin/python 
# -*- coding: UTF-8 -*-
from wikicamp.worklist.models import *
from django.shortcuts import render_to_response,get_object_or_404
from django.http import HttpResponseRedirect,HttpResponse
from django import forms
from django.forms.models import modelformset_factory,formset_factory
from wikicamp.worklist.forms import *
from django.contrib import auth
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.contrib.auth.decorators import *
from django.contrib.auth.forms import UserCreationForm,UserChangeForm
from django.template import RequestContext
from django.db.models import Max,Min,Avg,Q,get_model 
from django.core.mail import send_mail
from django.conf import Settings,settings
from django.core.paginator import Paginator
from django.utils import simplejson
from wikicamp.worklist.reports import *
from geraldo.generators import PDFGenerator
from decimal import *


def index(request):
    #bazi istatistikler..
    ist = islistesi.objects.filter().exclude(turu__in= isturu.objects.filter(id__in=("4","6")))
    toplam_isler = ist.count()
    ustlenilen_isler = ist.filter(onaylayan_kullanici__isnull=False).count()
    atanma_bekleyen_isler = ist.filter(onaylayan_kullanici__isnull=True).count()
    tamamlanan_isler = ist.filter(islem_durum=is_durumlar.objects.get(id=5),onaylandi=True).count()
    
    return render_to_response('worklist/index.html',{'toplam_isler':toplam_isler,'ustlenilen_isler':ustlenilen_isler,'atanma_bekleyen_isler':atanma_bekleyen_isler,'tamamlanan_isler':tamamlanan_isler},context_instance=RequestContext(request))

@login_required
def isistek_olustur(request):
    try:
        itsme = MyUser.objects.get(id=request.user.id)
       
        siradaki_sno = islistesi.objects.filter(kullanici=itsme).aggregate(Max('sno'))
        siradaki_sno = siradaki_sno['sno__max']+1
    except:
        siradaki_sno = 1
        
    form = islistesiForm()
    form['sno'].field.initial=siradaki_sno
    form['emailbildirimleri'].field.initial=False
    form['islem_durum'].field.initial= "4"
    return render_to_response('worklist/isistek_olustur.html',{'form':form},context_instance=RequestContext(request))

@login_required
def isistek_kaydet(request,isistek_id):
    
    itsme = MyUser.objects.get(id=request.user.id)
    
    try:
        form = islistesiForm(request.POST)
        if not form.is_valid():
            return render_to_response('worklist/isistek_olustur.html',{'form':form},context_instance=RequestContext(request))
        else:
            cd = form.cleaned_data
            isl = islistesi.objects.get(id=isistek_id)
            isl.sno = cd['sno']
            isl.aciklama = cd['aciklama']
            isl.atolye = cd['atolye']
            isl.turu = cd['turu']
            isl.cihaz= cd['cihaz']
            isl.planlanan_baslangic_tarihi = cd['planlanan_baslangic_tarihi']
            isl.isdurum = cd['islem_durum']
            isl.lokasyon = cd['lokasyon']
            isl.emailbildirimleri = cd['emailbildirimleri']
    except islistesi.DoesNotExist:
        isl = islistesi(sno=cd['sno'],aciklama=cd['aciklama'],atolye=cd['atolye'],turu=cd['turu'],cihaz=cd['cihaz'],planlanan_baslangic_tarihi=cd['planlanan_baslangic_tarihi'],islem_durum=cd['islem_durum'],lokasyon=cd['lokasyon'],emailbildirimleri=cd['emailbildirimleri'],kullanici=itsme,timestamp=datetime.datetime.now())
    
       
    isl.save()
    
    if isl.emailbildirimleri:
        xsubject = unicode("[NO-REPLY] İş İstek Kaydedildi #" + str(isl.id),'utf-8')
        xbody = unicode( "İş İstek Oluşturuldu \nKim :",'utf-8') +isl.kullanici.get_full_name() +  " " + unicode(" \nAçıklama : ",'utf-8') + isl.aciklama 
        xbody = xbody + u"\nBu email sistem tarafından otomatik oluşturulmuştur. Bilgilendirme amaçlıdır. Cevap vermeyiniz."
        email_yolla(request=request,subject=xsubject,body=xbody,touser=itsme.email,fromuser="isistek@egesaglik.com.tr")
    
    return render_to_response('worklist/isistek_kaydedildi.html',{'isl':isl},context_instance=RequestContext(request))

@login_required
def isistek_sil(request,isistek_id):
    
    if request.method == 'POST':    
       
        try: 
            islistesi.objects.filter(id=isistek_id).delete()
        except islistesi.DoesNotExist:
            #ilerde hata sinifini dolduracak sekilde duzenlenecek
            hata = u"hata olustu, is silinemedi..."
            print hata
            
    return HttpResponseRedirect("/worklist/")

@login_required
def islistesi_show(request):
    # parametreler
    xgoster = request.GET.get('goster')
    xis_sahibi = request.GET.get('is_sahibi')
    
    #nesneler ve verisetleri
    itsme = MyUser.objects.get(id=request.user.id)
    kul = kullanicilar.objects.get(user=request.user)
    isset = islistesi.objects.filter().exclude(turu__in=isturu.objects.filter(id__in= (4,6)) ).order_by('-timestamp')
    
    
    if xgoster  == "Hepsi":
        isset = isset
    elif xgoster == "Bekleyenler":
        isset = isset.exclude(onaylandi=1)
    elif xgoster == "Onayli":
        isset = isset.filter(onaylandi=1)
        
    if xis_sahibi == request.user.username:
        isset = isset.filter(onaylayan_kullanici=request.user)
        
    if not request.user.is_staff:
        
        if request.user.has_perm("worklist.is_tum_liste"):
            isset=isset.filter(atolye__in=kul.atolye.all())
        else:
            isset=isset.filter(kullanici=itsme)
    
    #bütün kayitlart isteniyor mu?
    xpage = request.GET.get('sayfa')
    try: 
        if xpage=="Hepsi":
            tum_kayitlar= True
        else:
            tum_kayitlar= False
    except:
        tum_kayitlar= False
    
    #enter pagination
    try:
        #gosterilecek sayfayi requestten al
        xpage=int(request.GET.get('sayfa'))
    except:
        xpage=1
    
    if tum_kayitlar:
        try:
            #50lik sayfalar olustur
            p= Paginator(isset,isset.count())
        except Exception,e:
            return render_to_response('worklist/404.html',{'err':e})

    else:
        
        try:
            #50lik sayfalar olustur
            p= Paginator(isset,50)
        except Exception,e:
            return render_to_response('worklist/404.html',{'err':e})
        
    xtoplamkayit=p.count  
    
    try:
        #gosterilecek sayfayi olsutur
        isset_sayfa= p.page(xpage)
    except:
        isset_sayfa = p.page(1)

    #indexleri belirle
    xstartindex = isset_sayfa.start_index()
    xendindex = isset_sayfa.end_index()
        
    #sonsayfanumarasini cek
    xsonsayfa = p.num_pages
    
    return render_to_response('worklist/isistek_tabular.html',{'isset':isset_sayfa.object_list,'isset_paginator':isset_sayfa,'xsayfa':xpage,'xtoplam':xtoplamkayit,'xstartindex':xstartindex,'xendindex':xendindex,'xsonsayfa':xsonsayfa,'xgoster':xgoster,'xis_sahibi':xis_sahibi},context_instance=RequestContext(request))

@login_required
def isistek_duzenle(request,isistek_id):
    
    try:
        
        isx= islistesi.objects.get(id=isistek_id)
        form = islistesiForm(instance=isx)
        
        #isliste_initial = islistesi.objects.filter(id=isistek_id).values()[0]
        #form['id'].field.initial = isliste_initial['id']
        #form['sno'].field.initial = isliste_initial['sno']
        #form['atolye'].field.initial=isliste_initial['atolye_id']
        #form['lokasyon'].field.initial=isliste_initial['lokasyon_id']
        #form['islem_durum'].field.initial=isliste_initial['islem_durum_id']
        #form['turu'].field.initial=isliste_initial['turu_id']
        #form['cihaz'].field.initial=isliste_initial['cihaz_id']
        #form['onaylayan_kullanici'].field.initial=isliste_initial['onaylayan_kullanici_id']
        #form['eknot'].field.initial= isliste_initial['eknot']
        #form['aciklama'].field.initial= isliste_initial['aciklama']
        #form['planlanan_baslangic_tarihi'].field.initial=isliste_initial['planlanan_baslangic_tarihi']
        #form['planlanan_bitis_tarihi'].field.initial=isliste_initial['planlanan_bitis_tarihi']
        #form['emailbildirimleri'].field.initial= isliste_initial['emailbildirimleri']
        #form['onaylandi'].field.initial = isliste_initial['onaylandi']
        
        if not request.user.is_staff:
            if not request.user.has_perm("worklist.is_tum_liste"):
                form['atolye'].field.widget.attrs.update({'readonly':True,'onfocus':'this.initialSelect = this.selectedIndex;','onchange':'this.selectedIndex = this.initialSelect;','style':'border:1px solid red; background-color:#DDDDDD;'})
        
        form['lokasyon'].field.widget.attrs.update({'readonly':True,'onfocus':'this.initialSelect = this.selectedIndex;','onchange':'this.selectedIndex = this.initialSelect;','style':'border:1px solid red; background-color:#DDDDDD;'})
        form['aciklama'].field.widget.attrs.update({'readonly':True,'style':'border:1px solid red; background-color:#DDDDDD;'})
        form['planlanan_baslangic_tarihi'].field.widget.attrs.update({'readonly':True,'style':'border:1px solid red; background-color:#DDDDDD;'})
        form['emailbildirimleri'].field.widget.attrs.update({'onclick':'return false;'})
        
        if not request.user.has_perm('worklist.is_kapatabilir'):
            form['onaylandi'].field.widget.attrs.update({'onclick':'return false;'})
        
        if not request.user.has_perm('worklist.is_kisi_edit'):
            
            if isx.onaylandi <> True:
        
                form['onaylayan_kullanici'].field.queryset=form['onaylayan_kullanici'].field.queryset.filter(username=request.user.username)
        
        
        if not request.user.is_staff:
            
            if isx.onaylandi == True:
                form['onaylayan_kullanici'].field.widget.attrs.update({'readonly':True,'onfocus':'this.initialSelect = this.selectedIndex;','onchange':'this.selectedIndex = this.initialSelect;','style':'border:1px solid red; background-color:#DDDDDD;'})
                form['eknot'].field.widget.attrs.update({'readonly':True,'style':'border:1px solid red; background-color:#DDDDDD;'})
                form['turu'].field.widget.attrs.update({'readonly':True,'onfocus':'this.initialSelect = this.selectedIndex;','onchange':'this.selectedIndex = this.initialSelect;','style':'border:1px solid red; background-color:#DDDDDD;'})
                form['islem_durum'].field.widget.attrs.update({'readonly':True,'onfocus':'this.initialSelect = this.selectedIndex;','onchange':'this.selectedIndex = this.initialSelect;','style':'border:1px solid red; background-color:#DDDDDD;'})
                form['planlanan_bitis_tarihi'].field.widget.attrs.update({'readonly':True,'style':'border:1px solid red; background-color:#DDDDDD;'})
                
        xgoster = request.GET.get('goster')
        xis_sahibi = request.GET.get('is_sahibi')
        
        #fatura enters
        fatform = FaturaForm()
        fatdetform = FaturadetayForm() 
        
        return render_to_response('worklist/isistek_guncelle.html',{'form':form,'fatform':fatform,'fatdetform':fatdetform,'isistek_id':isistek_id,'isset':isx,'xgoster':xgoster,'xis_sahibi':xis_sahibi},context_instance=RequestContext(request))
    except Exception,e:
        return render_to_response('worklist/404.html',{'err':e})

def isistek_onayla(request,isistek_id):
    isl = get_object_or_404(islistesi, id=isistek_id)
    xgoster = request.GET.get('goster')
    xis_sahibi = request.GET.get('is_sahibi')
    try:
        form = islistesiForm(request.POST, instance=isl)
        if not form.is_valid():
            
            if not request.user.is_staff:
                if not request.user.has_perm("worklist.is_tum_liste"):
                    form['atolye'].field.widget.attrs.update({'readonly':True,'onfocus':'this.initialSelect = this.selectedIndex;','onchange':'this.selectedIndex = this.initialSelect;','style':'border:1px solid red; background-color:#DDDDDD;'})
            
            form['lokasyon'].field.widget.attrs.update({'readonly':True,'onfocus':'this.initialSelect = this.selectedIndex;','onchange':'this.selectedIndex = this.initialSelect;','style':'border:1px solid red; background-color:#DDDDDD;'})
            form['aciklama'].field.widget.attrs.update({'readonly':True,'style':'border:1px solid red; background-color:#DDDDDD;'})
            form['planlanan_baslangic_tarihi'].field.widget.attrs.update({'readonly':True,'style':'border:1px solid red; background-color:#DDDDDD;'})
            form['emailbildirimleri'].field.widget.attrs.update({'onclick':'return false;'})
            
            if not request.user.has_perm('worklist.is_kapatabilir'):
                form['onaylandi'].field.widget.attrs.update({'onclick':'return false;'})
        
            if not request.user.has_perm('worklist.is_kisi_edit'):
                
                if isl.onaylandi <> 1:
                    
                    form['onaylayan_kullanici'].field.queryset=form['onaylayan_kullanici'].field.queryset.filter(username=request.user.username)
              
            return render_to_response('worklist/isistek_guncelle.html',{'form':form,'isistek_id':isistek_id,'xgoster':xgoster,'xis_sahibi':xis_sahibi},context_instance=RequestContext(request))
        else:
            cd = form.cleaned_data
            isl = islistesi.objects.get(id=isistek_id)
            isl.turu = cd['turu']
            try:
                isl.cihaz = cihazlar.objects.get(id=int(request.POST['cihaz']))
            except:
                isl.cihaz=None
                
            isl.atolye= cd['atolye']
            isl.islem_durum = cd['islem_durum']
            isl.onaylayan_kullanici = cd['onaylayan_kullanici']
            isl.planlanan_bitis_tarihi = cd['planlanan_bitis_tarihi']
            isl.eknot = cd['eknot']
            isl.emailbildirimleri= cd['emailbildirimleri']
            isl.onaylandi = cd['onaylandi']
    except islistesi.DoesNotExist:
        return render_to_response('worklist/500.html')

    isl.save()
    
    if isl.emailbildirimleri==1 and isl.onaylayan_kullanici:
        xsubject = unicode("[NO-REPLY] İş İstek Güncellendi #" + str(isl.id),'utf-8')
        xbody = unicode( "İş İstek Güncellendi \nİş istek oluşturan :",'utf-8') +isl.kullanici.get_full_name() +  " " + unicode(" \n İş İstek Açıklaması : ",'utf-8') + isl.aciklama 
        xbody = xbody + unicode("\nGüncelleyenin Notu :",'utf-8') + isl.eknot 
        xbody = xbody + unicode("\nPlanlanan Bitiş Tarihi :",'utf-8') + str(isl.planlanan_bitis_tarihi)
        xbody = xbody + unicode("\nİş Atanan Kullanıcı :",'utf-8') + isl.onaylayan_kullanici.get_full_name()
        xbody = xbody + unicode("\nGüncelleyen :",'utf-8') + request.user.get_full_name()
     
        xbody = xbody + u"\nBu email sistem tarafından otomatik oluşturulmuştur. Bilgilendirme amaçlıdır. Cevap vermeyiniz."
        email_yolla(request=request,subject=xsubject,body=xbody,touser=isl.kullanici.email,fromuser="isistek@egesaglik.com.tr")

    
    return HttpResponseRedirect("/worklist/islistesi/?goster="+xgoster+"&is_sahibi="+xis_sahibi)

@login_required
@permission_required('worklist.coklu_onayla')
def isistek_coklu_onayla(request):
    xgoster = request.GET.get('goster')
    xis_sahibi = request.GET.get('is_sahibi')  
    xonaylist = []  
    xonaylanacaklar = request.GET.get('onaylist')
    xonaylanacaklar = xonaylanacaklar.replace('[','').replace(']','')
    
    for x in xonaylanacaklar.split(','):
        xonaylist.append(int(x))
    
    
    if not request.user.has_perm('worklist.coklu_onay'):
        return HttpResponseRedirect("/worklist/islistesi/?goster="+xgoster+"&is_sahibi="+xis_sahibi)
    
    else:
    
        xsayisl = islistesi.objects.filter(id__in=xonaylist).exclude(onaylandi=True).update(onaylandi=True,onaylayan_kullanici=MyUser.objects.get(id=request.user.id),planlanan_bitis_tarihi = datetime.datetime.now())
        
     
        return HttpResponseRedirect("/worklist/islistesi/?goster="+xgoster+"&is_sahibi="+xis_sahibi+"&guncellenen_is="+str(xsayisl))
    
@login_required    
@permission_required('worklist.kullanici_acma')
def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        
        if form.is_valid():
            new_user = form.save()
            try:
                siradaki_sno = kullanicilar.objects.all().aggregate(Max('sno'))
                siradaki_sno = str(siradaki_sno['sno__max']+1)
                form['sno'].field.initial=siradaki_sno
            except:
                siradaki_sno= 1    
            
            djangouser = User.objects.filter(username=form['username'].data)   
            kul = kullanicilar(sno=siradaki_sno,user=new_user,timestamp=datetime.datetime.now(),ack=u" ",unvan=u" ")
            kul.save()
            return HttpResponseRedirect("/accounts/profile/" + form['username'].data +"/edit/")
           
    else:
        
        form = UserCreationForm()
    return render_to_response("registration/register.html", {'form': form},context_instance=RequestContext(request))


def profile(request,user_name):
   
    djangouserid = str(User.objects.filter(username=user_name).values()[0]['id'])
    kul = kullanicilar.objects.get(user=djangouserid)
    form = ProfileForm(instance=kul)
   
    return render_to_response('registration/profile.html',{'form':form,'xuser':user_name},context_instance=RequestContext(request))         
 
    
def profile_save(request,user_name):

    
    try:
        djangousr=User.objects.get(username=user_name)
        djangousr.first_name = request.POST['first_name']
        djangousr.last_name = request.POST['last_name']
        djangousr.email = request.POST['email']
        djangousr.save()
    except:
        return HttpResponse("<h1>eror 500 : user_save ex oldu direk")
     
    try:    
      #  print "ff : " + str(djangousr.id)
        kul = kullanicilar.objects.get(user=str(djangousr.id))
     #   print "ff : " + str(dir(kul)) + " | " + str(kul)
        kul.unvan= request.POST['unvan']
        kul.atolye.clear()
        if 'atolye' in request.POST:
        
            atolyeler_idlist = request.POST.getlist('atolye')
            print atolyeler_idlist
            for atolye_id in atolyeler_idlist:
                atolye_ = atolyeler.objects.get(id=str(atolye_id))
                kul.atolye.add(atolye_)
                
            
        kul.ack = request.POST['ack']
        kul.save()
                         
    except:
        return HttpResponse("<h1>eror 500 : kullanici save ex oldu direk")
    
    return HttpResponseRedirect("/accounts/profile/" + user_name +"/edit/")  

def profile_logout(request):
    logout(request)
    return HttpResponseRedirect("/worklist/")

@login_required
@permission_required('worklist.sabit_tanimlama')
def tanimlamalar(request,tanimlama_id):
    sabitler = sabittablolar.objects.all().order_by('aciklama')
    tanimlama_id=str(tanimlama_id)
    
    if tanimlama_id=="None":
        return render_to_response('worklist/sabitler.html',{'sabitler':sabitler},context_instance=RequestContext(request))
    else :
        s = sabitler.get(id=tanimlama_id)
        #exec('tanim_list = ' + s.tablo_adi +'.objects.all().order_by(\'sno\')')
        model_ = get_model('worklist', sabittablolar.objects.get(id=tanimlama_id).tablo_adi)
        tanim_list= model_.objects.all()
        xsay = tanim_list.count()
        
       
        if tanimlama_id == "9":
            
            return render_to_response('worklist/tanimlama_list.html',{'cari_list':tanim_list,'s':s,'xsay':xsay},context_instance=RequestContext(request))
        
        elif tanimlama_id == "2":
            try:
                bakimlar = request.GET.get('bakimlar')
                if bakimlar==None:
                    bakimlar="H"
            except:
                bakimlar= "H"
            
            try:
                H = request.GET.get('H')
                if H==None:
                    H="L"
            except:
                H="L"
            
            try:
                Durum = request.GET.get('Durum')
                if Durum==None:
                    Durum="H"
            except:
                Durum="H"
            
            if Durum=="P":
                tanim_list= tanim_list.filter(durum=gecerlilik_durumlar.objects.get(id=2))
            elif Durum=="A":
                tanim_list= tanim_list.filter(durum=gecerlilik_durumlar.objects.get(id=1))
            
            return render_to_response('worklist/tanimlama_list_cihaz.html',{'cihaz_list':tanim_list,'yil':datetime.datetime.now().year,'bakimlar':bakimlar,'H':H,'Durum':Durum,'s':s,'xsay':xsay},context_instance=RequestContext(request))
        
        else:
        
            return render_to_response('worklist/tanimlama_list.html',{'tanim_list':tanim_list,'s':s,'xsay':xsay},context_instance=RequestContext(request))

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_ekle(request,tanimlama_id):


    tanimlama_id=str(tanimlama_id)

    s = sabittablolar.objects.get(id=tanimlama_id)

    exec ('form = '+ s.tablo_adi.capitalize() + 'Form()')
       
    try:
        exec('siradaki_sno = '+ s.tablo_adi +'.objects.all().aggregate(Max(\'sno\'))')
        siradaki_sno = str(siradaki_sno['sno__max']+1)
    except Exception:
        siradaki_sno = "1"
    form['sno'].field.initial=siradaki_sno
    
    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_sil(request,tanimlama_id,kayit_sno):
    tanimlama_id= str(tanimlama_id)
    err=[]
    
    if tanimlama_id == "1":

        s = sabittablolar.objects.get(id=tanimlama_id)
        try:

            atols = atolyeler.objects.filter(id=kayit_sno)
            isl_say = islistesi.objects.filter(atolye__in=atols).count()
            
            if isl_say > 0:
                erx = u"Atölye kaydı hareket gördüğünden, silinemez."
                err.append(erx)
            else:
                atols.delete()
                
            tanim_list = atolyeler.objects.all().order_by('sno')
            xsay = tanim_list.count()

        except atolyeler.DoesNotExist:
            tanim_list = atolyeler.objects.all().order_by('sno')
            xsay = tanim_list.count()

    
    if tanimlama_id == "2":

        s = sabittablolar.objects.get(id=tanimlama_id)
        try:
            
            cihazs = cihazlar.objects.filter(id=kayit_sno)
            isl_say = islistesi.objects.filter(cihaz__in=cihazs).count()
            
            if isl_say > 0:
                erx = u"Cihaz kaydı hareket gördüğünden, silinemez."
                err.append(erx)
            else:
                
                cihazs.delete()
                
                       
            tanim_list = cihazlar.objects.all().order_by('sno')
            xsay = tanim_list.count()

        except cihazlar.DoesNotExist:
            tanim_list = cihazlar.objects.all().order_by('sno')
            xsay = tanim_list.count()

    
    if tanimlama_id == "3":

        s = sabittablolar.objects.get(id=tanimlama_id)
        try:
            erx = u"Geçerlilik Durumları silinemez."
            err.append(erx)
            tanim_list = gecerlilik_durumlar.objects.all().order_by('sno')
            xsay = tanim_list.count()

        except gecerlilik_durumlar.DoesNotExist:
            tanim_list = gecerlilik_durumlar.objects.all().order_by('sno')
            xsay = tanim_list.count()

    
    if tanimlama_id == "4":

        s = sabittablolar.objects.get(id=tanimlama_id)
        try:
            is_durumz = is_durumlar.objects.filter(id=kayit_sno)
            isl_say = islistesi.objects.filter(islem_durum__in=is_durumz).count()
            
            if isl_say > 0:
                erx = u"İşlem durum kaydı hareket gördüğünden silinemez"
                err.append(erx)
            else:
                is_durumz.delete()
                
            
            tanim_list = is_durumlar.objects.all().order_by('sno')
            xsay = tanim_list.count()

        except is_durumlar.DoesNotExist:
            tanim_list = is_durumlar.objects.all().order_by('sno')
            xsay = tanim_list.count()

    
    if tanimlama_id == "5":

        s = sabittablolar.objects.get(id=tanimlama_id)
        
        try:
            isturz = isturu.objects.filter(id=kayit_sno)
            isl_say = islistesi.objects.filter(turu__in=isturz).count()
            
            if isl_say > 0:
                erx=u"İş türü kaydı hareket gördüğünden silinemez"
                err.append(erx)
            else:
                isturz.delete()
                
           
            tanim_list = isturu.objects.all().order_by('sno')
            xsay = tanim_list.count()

        except isturu.DoesNotExist:
            tanim_list = isturu.objects.all().order_by('sno')
            xsay = tanim_list.count()

    
    if tanimlama_id == "6":

        s = sabittablolar.objects.get(id=tanimlama_id)
        try:
           
            kullanicigrup.objects.filter(id=kayit_sno).delete()
            tanim_list = kullanicigrup.objects.all().order_by('sno')
            xsay = tanim_list.count()

        except kullanicigrup.DoesNotExist:
            tanim_list = kullanicigrup.objects.all().order_by('sno')
            xsay = tanim_list.count()

    
    if tanimlama_id == "7":

        s = sabittablolar.objects.get(id=tanimlama_id)
        try:
            lokaz = lokasyonlar.objects.filter(id=kayit_sno)
            isl_say = islistesi.objects.filter(lokasyon__in=lokaz).count()
            
            if isl_say > 0:
                erx = u"Lokasyon kaydı hareket gördüğünden silinemez"
                err.append(erx)
            else:
                lokaz.delete()
            
            tanim_list = lokasyonlar.objects.all().order_by('sno')
            xsay = tanim_list.count()

        except lokasyonlar.DoesNotExist:
            tanim_list = lokasyonlar.objects.all().order_by('sno')
            xsay = tanim_list.count()
            
    if tanimlama_id =="8":
        
        s= sabittablolar.objects.get(id=tanimlama_id)
        try:
            caritipz = caritip.objects.filter(id=kayit_sno)
            cari_say = carikart.objects.filter(tip__in=caritipz).count()
            
            if cari_say > 0 :
                erx = u"Cari tip kaydı hareket gördüğünden silinemez"
                err.append(erx)
            else:
                caritipz.delete()
            
            
            tanim_list=caritip.objects.all().order_by('sno')
            xsay = tanim_list.count()
            
        except caritip.DoesNotExist:
            tanim_list=caritip.objects.all().order_by('sno')
            xsay= tanim_list.count()
    
    if tanimlama_id == "9":
        
        s= sabittablolar.objects.get(id=tanimlama_id)
        try:
            carikartz = carikart.objects.filter(id=kayit_sno)
            isl_say = islistesi.objects.filter(markasi__in=carikartz).count()
            
            if isl_say > 0:
                erx=u"Cari kart kaydı hareket gördüğünden silinemez"
                err.append(erx)
            else:
                carikartz.delete()
                
            tanim_list = carikart.objects.all().order_by('sno')
            xsay = tanim_list.count()
            
        except carikart.DoesNotExist:
            tanim_list=carikart.objects.all().order_by('sno')
            xsay = tanim_list.count()
        
        return render_to_response('worklist/tanimlama_list.html',{'cari_list':tanim_list,'s':s,'xsay':xsay},context_instance=RequestContext(request))
        
    
    if tanimlama_id == "10":
        
        s= sabittablolar.objects.get(id=tanimlama_id)
        try:
            aidz = aidiyet.objects.filter(id=kayit_sno)
            cih_say =  cihazlar.objects.filter(aidiyet__in=aidz).count()
            
            if cih_say > 0:
                erx=u"Aidiyet kaydı hareket gördüğünden silinemez"
                err.append(erx)
            else:
                aidz.delete()
                
            tanim_list = aidiyet.objects.all().order_by('sno')
            xsay = tanim_list.count()
            
        except aidiyet.DoesNotExist:
            tanim_list=aidiyet.objects.all().order_by('sno')
            xsay = tanim_list.count()
        

    if tanimlama_id == "11":
        
        s = sabittablolar.objects.get(id=tanimlama_id)
        try:
            bakimnodz = bakimnoktalari.objects.filter(id=kayit_sno)
            defter_say = bakimtablosu.objects.filter(bakimnoktasi__in=bakimnodz).count()
            
            if defter_say > 0:
                erx= u"Bakım noktası kaydı hareket gördüğünden silinemez"
                erx.append(erx)
            else:
                bakimnodz.delete()
            
            tanim_list= bakimnoktalari.objects.filter().order_by('sno')
            xsay = tanim_list.count()
            
        except bakimnoktalari.DoesNotExist:
            tanim_list= bakimnoktalari.objects.filter().order_by('sno')
            xsay = tanim_list.count()
            
    if tanimlama_id == "12":
        
        s = sabittablolar.objects.get(id=tanimlama_id)
        try:
            tuketimnodz = bakimnoktalari.objects.filter(id=kayit_sno)
            defter_say = tuketimkaydi.objects.filter(tuketimnoktasi__in=tuketimnodz).count()
            
            if defter_say > 0:
                erx= u"Tüketim noktası kaydı hareket gördüğünden silinemez"
                erx.append(erx)
            else:
                tuketimnodz.delete()
            
            tanim_list= tuketimnoktalari.objects.filter().order_by('sno')
            xsay = tanim_list.count()
            
        except tuketimnoktalari.DoesNotExist:
            tanim_list= tuketimnoktalari.objects.filter().order_by('sno')
            xsay = tanim_list.count()
    return render_to_response('worklist/tanimlama_list.html',{'tanim_list':tanim_list,'s':s,'xsay':xsay,'err':err},context_instance=RequestContext(request))

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_kaydet(request,tanimlama_id,kayit_sno):

    
    tanimlama_id= str(tanimlama_id)
    if request.method =="POST":

        if tanimlama_id == "1":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:
                form = AtolyelerForm(request.POST)

                if not form.is_valid():

                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    atol = atolyeler.objects.get(id=kayit_sno)
                    atol.sno = cd['sno']
                    atol.aciklama= cd['aciklama']
                    atol.durum = cd['durum_id']
                    
            except atolyeler.DoesNotExist:
                atol = atolyeler(sno=cd['sno'],aciklama=cd['aciklama'],durum=cd['durum_id'])

            atol.save()
            tanim_list = atolyeler.objects.all().order_by('sno')
            xsay = tanim_list.count()
       
        elif tanimlama_id =="2":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:
                form = CihazlarForm(request.POST)

                if not form.is_valid():

                    return render_to_response('worklist/tanimlama_form.html',{'cihazform':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    cihaz = cihazlar.objects.get(id=kayit_sno)
                    cihaz.sno=cd['sno']
                    cihaz.aciklama=cd['aciklama']
                    cihaz.serino=cd['serino']
                    cihaz.lokasyon=cd['lokasyon_id']
                    cihaz.durum = cd['durum_id']
                    cihaz.demirbasno = cd['demirbasno']
                    cihaz.markasi =  cd['markasi_id']
                    cihaz.modeli= cd['modeli']
                    cihaz.garanti_bitis_tarihi = cd['garanti_bitis_tarihi']
                    cihaz.aidiyet= cd['aidiyet_id']
                    cihaz.barkod = cd['barkod']
                    cihaz.parent_id = cd['parent_id']
                    cihaz.eknot= cd['eknot']
                    cihaz.yetkili_servisi=cd['yetkili_servisi_id']
                    cihaz.cihaz_alinis_tarihi = cd['cihaz_alinis_tarihi']
                    cihaz.save()
                    
            except cihazlar.DoesNotExist:

                cihaz = cihazlar(sno=cd['sno'],aciklama=cd['aciklama'],serino=cd['serino'],lokasyon=cd['lokasyon_id'],durum=cd['durum_id'],demirbasno=cd['demirbasno'],markasi =  cd['markasi_id'],eknot= cd['eknot'],modeli=cd['modeli'],garanti_bitis_tarihi=cd['garanti_bitis_tarihi'],barkod=cd['barkod'],aidiyet=cd['aidiyet_id'],parent_id=cd['parent_id'],yetkili_servisi=cd['yetkili_servisi_id'],cihaz_alinis_tarihi=cd['cihaz_alinis_tarihi'])
                cihaz.save()
                #1 yil ileriye zorunlu bakim at
                siradaki_sno = islistesi.objects.filter(turu=isturu.objects.get(id=4)).aggregate(Max('sno'))
                    
                try:
                    siradaki_sno = siradaki_sno['sno__max']+1
                except:
                    siradaki_sno = 1
                
                cihazin_loc = cihaz.lokasyon
                try:
                    itsme = MyUser.objects.get(id=request.user.id)
                    xbugun  = datetime.datetime.now()
                    buyil = xbugun.year 
                    xgelecekyilbugun = xbugun.replace(year=buyil+1)          
                    isl_prog = islistesi(sno=siradaki_sno,turu=isturu.objects.get(id=4),aciklama=cihaz.aciklama + u" PERİYODİK BAKIM",lokasyon=cihazin_loc,cihaz=cihaz,atolye=atolyeler.objects.get(id=2),islem_durum=is_durumlar.objects.get(id=1),planlanan_baslangic_tarihi=xgelecekyilbugun,planlanan_bitis_tarihi=xgelecekyilbugun,emailbildirimleri=False,kullanici=itsme,timestamp=datetime.datetime.now())
                    isl_prog.save()
                
                except Exception,e:
                    return render_to_response('worklist/404.html',{'err':e})
                #zorunlu bakim atis sonu
            
            
            tanim_list = cihazlar.objects.all().order_by('sno')
            xsay = tanim_list.count()
            
            cxid = unicode(cihaz.id)
            if '_continue' in request.POST:
                               
                return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+str(cxid)+"/degistir/")
            
            #return render_to_response('worklist/tanimlama_list_cihaz.html',{'cihaz_list':tanim_list,'yil':datetime.datetime.now().year,'s':s,'xsay':xsay},context_instance=RequestContext(request))
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/")
        
        elif tanimlama_id == "3":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:
                form = Gecerlilik_durumlarForm(request.POST)

                if not form.is_valid():

                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    gecerlilik = gecerlilik_durumlar.objects.get(id=kayit_sno)
                    gecerlilik.sno = cd ['sno']
                    gecerlilik.aciklama = cd['aciklama']
            except gecerlilik_durumlar.DoesNotExist:

                gecerlilik = gecerlilik_durumlar(sno=cd['sno'],aciklama=cd['aciklama'])

            gecerlilik.save()
            tanim_list = gecerlilik_durumlar.objects.all().order_by('sno')
            xsay = tanim_list.count()
      
        elif tanimlama_id == "4":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:
                form = Is_durumlarForm(request.POST)

                if not form.is_valid():

                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    is_durum = is_durumlar.objects.get(id=kayit_sno)
                    is_durum.sno=cd['sno']
                    is_durum.aciklama = cd['aciklama']

            except is_durumlar.DoesNotExist:

                is_durum = is_durumlar(sno=cd['sno'],aciklama=cd['aciklama'])

            is_durum.save()
            tanim_list = is_durumlar.objects.all().order_by('sno')
            xsay= tanim_list.count()
      
        elif tanimlama_id == "5":
            s= sabittablolar.objects.get(id=tanimlama_id)
            try:
                form = IsturuForm(request.POST)

                if not form.is_valid():

                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd= form.cleaned_data
                    istur = isturu.objects.get(id=kayit_sno)
                    istur.sno=cd['sno']
                    istur.aciklama = cd['aciklama']

            except isturu.DoesNotExist:
                istur = isturu(sno=cd['sno'],aciklama=cd['aciklama'])

            istur.save()
            tanim_list= isturu.objects.all().order_by('sno')
            xsay = tanim_list.count()

        elif tanimlama_id == "6":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:
                form = KullanicigrupForm(request.POST)

                if not form.is_valid():
                    s = sabittablolar.objects.get(id=tanimlama_id)
                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd= form.cleaned_data
                    kulgrup = kullanicigrup.objects.get(id=kayit_sno)
                    kulgrup.sno = cd['sno']
                    kulgrup.aciklama= cd['aciklama']
                    kulgrup.durum = cd['durum_id']
            except kullanicigrup.DoesNotExist:

                kulgrup = kullanicigrup(sno=cd['sno'],aciklama=cd['aciklama'],durum=cd['durum_id'])

            kulgrup.save()
            tanim_list = kullanicigrup.objects.all().order_by('sno')
            xsay = tanim_list.count()
 
        elif tanimlama_id == "7":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:

                form = LokasyonlarForm(request.POST)

                if not form.is_valid():
                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    loc = lokasyonlar.objects.get(id=kayit_sno)
                    loc.sno = cd['sno']
                    loc.aciklama=cd['aciklama']
                    loc.durum = cd['durum_id']
                    
            except lokasyonlar.DoesNotExist:

                loc = lokasyonlar(sno=cd['sno'],aciklama=cd['aciklama'],durum=cd['durum_id'])

            loc.save()
            tanim_list =lokasyonlar.objects.all().order_by('sno')
            xsay  = tanim_list.count()

        elif tanimlama_id == "8":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:

                form = CaritipForm(request.POST)

                if not form.is_valid():
                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    ctip = caritip.objects.get(id=kayit_sno)
                    ctip.sno = cd['sno']
                    ctip.aciklama=cd['aciklama']
                    
            except caritip.DoesNotExist:

                ctip = caritip(sno=cd['sno'],aciklama=cd['aciklama'])

            ctip.save()
            tanim_list =caritip.objects.all().order_by('sno')
            xsay  = tanim_list.count()      
        
        elif tanimlama_id == "9":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:

                form = CarikartForm(request.POST)

                if not form.is_valid():
                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    ckart = carikart.objects.get(id=kayit_sno)
                    ckart.sno = cd['sno']
                    ckart.aciklama=cd['aciklama']
                    ckart.adres= cd['adres']
                    ckart.tel1 = cd['tel1']
                    ckart.tel2 = cd['tel2']
                    ckart.iletisim = cd['iletisim']
                    ckart.email = cd['email']
                    ckart.tip= cd['tip_id']
                    
            except carikart.DoesNotExist:
                
                ckart = carikart(sno=cd['sno'],aciklama=cd['aciklama'],adres=cd['adres'],tel1=cd['tel1'],tel2=cd['tel2'],iletisim=cd['iletisim'],email=cd['email'],tip=cd['tip_id'])

            ckart.save()
            tanim_list =carikart.objects.all().order_by('sno')
            xsay  = tanim_list.count()      
            return render_to_response('worklist/tanimlama_list.html',{'cari_list':tanim_list,'s':s,'xsay':xsay},context_instance=RequestContext(request))

        elif tanimlama_id == "10":
            s = sabittablolar.objects.get(id=tanimlama_id)
            try:

                form = AidiyetForm(request.POST)

                if not form.is_valid():
                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd = form.cleaned_data
                    atip = aidiyet.objects.get(id=kayit_sno)
                    atip.sno = cd['sno']
                    atip.aciklama=cd['aciklama']
                    
            except aidiyet.DoesNotExist:

                atip = aidiyet(sno=cd['sno'],aciklama=cd['aciklama'])

            atip.save()
            tanim_list = aidiyet.objects.all().order_by('sno')
            xsay  = tanim_list.count()      

        elif tanimlama_id == "11":
            
            s= sabittablolar.objects.get(id=tanimlama_id)
            try:
                
                form = BakimnoktalariForm(request.POST)
                
                if not form.is_valid():
                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd= form.cleaned_data
                    bakimnod = bakimnoktalari.objects.get(id=kayit_sno)
                    bakimnod.sno = cd['sno']
                    bakimnod.aciklama= cd['aciklama']
                  
            except bakimnoktalari.DoesNotExist:
                
                bakimnod = bakimnoktalari(sno=cd['sno'],aciklama=cd['aciklama'])

        elif tanimlama_id == "12":
            
            s= sabittablolar.objects.get(id=tanimlama_id)
            try:
                
                form = TuketimnoktalariForm(request.POST)
                
                if not form.is_valid():
                    return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
                else:
                    cd= form.cleaned_data
                    tuketimnod = tuketimnoktalari.objects.get(id=kayit_sno)
                    tuketimnod.sno = cd['sno']
                    tuketimnod.aciklama= cd['aciklama']
                    tuketimnod.birim = cd['birim_id']
                  
            except tuketimnoktalari.DoesNotExist:
                
                tuketimnod = tuketimnoktalari(sno=cd['sno'],aciklama=cd['aciklama'],birim=cd['birim_id'])
               
           
            tuketimnod.save()
            tanim_list = tuketimnoktalari.objects.all().order_by('sno')
            xsay = tanim_list.count()
      
        return render_to_response('worklist/tanimlama_list.html',{'tanim_list':tanim_list,'s':s,'xsay':xsay},context_instance=RequestContext(request))



@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_degistir(request,tanimlama_id,kayit_sno):


    tanimlama_id=str(tanimlama_id)
    s = sabittablolar.objects.get(id=tanimlama_id)

    if tanimlama_id == "1":
            try:
                a_initial = atolyeler.objects.filter(id=kayit_sno).values()[0]
                form = AtolyelerForm(a_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))

            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})


    elif tanimlama_id == "2":
            git = request.GET.get('git')
            
            try:
                xprog = int(request.GET.get('program'))
            except:
                xprog=0
                
            try:
                cihaz_initial = cihazlar.objects.filter(id=kayit_sno).values()[0]
                form = CihazlarForm(cihaz_initial)
                eform = EkCihazlarForm()
                #ekcihazlarini cek
                ekcihazlist = cihazlar.objects.filter(parent_id=kayit_sno)  
                #bakimform olustur bakalimmm
                my_cihaz=cihazlar.objects.get(id=kayit_sno)
                
                if xprog > 0:
                    bakim_inst = islistesi.objects.get(id=xprog)
                    bakimform = BakimForm(instance=bakim_inst)
                
                else:
                    bakimform = BakimForm()
                
                bakimlist=islistesi.objects.filter(turu__in= isturu.objects.filter(id__in=("4","6")),cihaz=my_cihaz).order_by('planlanan_bitis_tarihi')
                bakimtaslaklar = bakimtaslagi.objects.filter(ontanimli=True)         
                bakimtabloz = bakimtablosu.objects.filter(cihaz=my_cihaz) 
                
                #tab4 icin islistesini cekelim
                cihaz_islist = islistesi.objects.filter(cihaz=my_cihaz).exclude(turu__in=isturu.objects.filter(id__in=("4","6"))).order_by('timestamp')
                s = sabittablolar.objects.get(id=tanimlama_id)
                
                #tab5 icin documentform vs etc
                documentform = DocumentForm()
                doclist = Document.objects.filter(cihaz=my_cihaz).order_by('document').order_by('timestamp')
                return render_to_response('worklist/tanimlama_form.html',{'cihazform':form,'ekcihazform':eform,'bakimform':bakimform,'bakim_id':xprog, 'bakimlist':bakimlist,'s':s,'ekcihazlist':ekcihazlist,'bakimtaslaklar':bakimtaslaklar,'bakimtabloz':bakimtabloz,'cihaz_islist':cihaz_islist,'documentform':documentform,'doclist':doclist,'git':git},context_instance=RequestContext(request))

            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id =="3":
            try:
                gecer_initial = gecerlilik_durumlar.objects.filter(id=kayit_sno).values()[0]
                form = Gecerlilik_durumlarForm(gecer_initial)
                s=sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "4":
            try:
                isdurum_initial =is_durumlar.objects.filter(id=kayit_sno).values()[0]
                form = Is_durumlarForm(isdurum_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "5":
            try:
                istur_initial =isturu.objects.filter(id=kayit_sno).values()[0]
                form = IsturuForm(istur_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "6":

            try:

                kulgrup_initial =kullanicigrup.objects.filter(id=kayit_sno).values()[0]
                form = KullanicigrupForm(kulgrup_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "7":

            try:
                lok_initial =lokasyonlar.objects.filter(id=kayit_sno).values()[0]
                form = LokasyonlarForm(lok_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "8":

            try:
                caritip_initial =caritip.objects.filter(id=kayit_sno).values()[0]
                form = CaritipForm(caritip_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "9":

            try:
                carikart_initial =carikart.objects.filter(id=kayit_sno).values()[0]
                form = CarikartForm(carikart_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "10":

            try:
                aidiyet_initial = aidiyet.objects.filter(id=kayit_sno).values()[0]
                form = AidiyetForm(aidiyet_initial)
                s = sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

    elif tanimlama_id == "11":
        
            try:
                bakimnod_initial = bakimnoktalari.objects.filter(id=kayit_sno).values()[0]
                form = BakimnoktalariForm(bakimnod_initial)
                s= sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception,e:
                return render_to_response('worklist/404.html',{'err':e})
            
    elif tanimlama_id == "12":
        
            try:
                tuketimnod_initial = tuketimnoktalari.objects.filter(id=kayit_sno).values()[0]
                form = TuketimnoktalariForm(tuketimnod_initial)
                s= sabittablolar.objects.get(id=tanimlama_id)
                return render_to_response('worklist/tanimlama_form.html',{'form':form,'s':s},context_instance=RequestContext(request))
            except Exception,e:
                return render_to_response('worklist/404.html',{'err':e})

def autocomplete_aciklama_ajax(request):
    
    xqueryword = request.GET.get('query')
    jdict=[]
    try:    
        
        xmodelid = request.GET.get('sid')
        model_ = get_model('worklist', sabittablolar.objects.get(id=xmodelid).tablo_adi)
        xqueryword = request.GET.get('query')
    
        aciklamalist=model_.objects.values('aciklama').filter(aciklama__istartswith= xqueryword).distinct()
        
        for cx in aciklamalist:
            jdict.append(cx['aciklama'])
        
        single_j={"query":xqueryword,"suggestions":jdict,"data":jdict}

    
        return HttpResponse(simplejson.dumps(single_j),content_type = 'application/javascript; charset=utf8')
    except:
        single_j={"query":xqueryword,"suggestions":jdict,"data":jdict}
        return HttpResponse(simplejson.dumps(single_j),content_type = 'application/javascript; charset=utf8')

def autocomplete_modeli_ajax(request):
    xqueryword = request.GET.get('query')
    jdict=[]
    try:    
        
        xmodelid = request.GET.get('sid')
        model_ = get_model('worklist', sabittablolar.objects.get(id=xmodelid).tablo_adi)
        xqueryword = request.GET.get('query')
    
        aciklamalist=model_.objects.values('modeli').filter(modeli__istartswith= xqueryword).distinct()
        
        for cx in aciklamalist:
            jdict.append(cx['modeli'])
        
        single_j={"query":xqueryword,"suggestions":jdict,"data":jdict}

    
        return HttpResponse(simplejson.dumps(single_j),content_type = 'application/javascript; charset=utf8')
    except:
        single_j={"query":xqueryword,"suggestions":jdict,"data":jdict}
        return HttpResponse(simplejson.dumps(single_j),content_type = 'application/javascript; charset=utf8')

@permission_required('worklist.sabit_tanimlama')    
def tanimlamalar_altbirim_ekle(request,tanimlama_id,kayit_sno):

    tanimlama_id=str(tanimlama_id)
    
    cid = request.GET.get('cid')
    
    if tanimlama_id == "2":

            try:
                #ekleyecegimzi cihazimizi cekelim
                cih = cihazlar.objects.get(id=cid)
                
                #ekleencek cihaizimizn parent'i oalrak parent cihimizi atayalm
                cih.parent_id= kayit_sno
                
                cih.save()
                
                return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/")

            except Exception, e:
                return render_to_response('worklist/404.html',{'err':e})

@permission_required('worklist.sabit_tanimlama')        
def tanimlamalar_altbirim_kaldir(request,tanimlama_id,kayit_sno):

    tanimlama_id=str(tanimlama_id)
    
    cid = request.GET.get('cid')
    
    if tanimlama_id=="2":
        
        try:
            #kaldiracagimiz cihazi cekelim
            cih = cihazlar.objects.get(id=cid)
            cih.parent_id = None
            cih.save()
            
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/")
        
        except Exception, e:
            
            return render_to_response('worklist/404.html',{'err':e})

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_program_goster(request,tanimlama_id,kayit_sno,bakim_id):
    tanimlama_id=str(tanimlama_id)
    
    try:
        
        return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab2&program="+bakim_id)
        
    except Exception,e:
        
        return render_to_response('worklist/404.html',{'err':e})
    
    
@permission_required('worklist.sabit_tanimlama')    
def tanimlamalar_program_ekle(request,tanimlama_id,kayit_sno):
    tanimlama_id=str(tanimlama_id)
    itsme = MyUser.objects.get(id=request.user.id)
    
    if request.method == 'POST':
        
        bakimform = BakimForm(request.POST)
        
        if '_add' in request.POST:
                
            if bakimform.is_valid():
            
            
                cd = bakimform.cleaned_data
                siradaki_sno = islistesi.objects.filter(turu=cd['turu']).aggregate(Max('sno'))
                
                try:
                    siradaki_sno = siradaki_sno['sno__max']+1
                except:
                    siradaki_sno = 1
                
                cihazin_loc = cihazlar.objects.get(id=kayit_sno).lokasyon
                
                
                try:
                                    
                    isl_prog = islistesi(sno=siradaki_sno,turu=cd['turu'],aciklama=cd['aciklama'],lokasyon=cihazin_loc,cihaz=cihazlar.objects.get(id=kayit_sno),atolye=cd['atolye'],islem_durum=is_durumlar.objects.get(id=1),planlanan_baslangic_tarihi=cd['planlanan_baslangic_tarihi'],planlanan_bitis_tarihi=cd['planlanan_bitis_tarihi'],emailbildirimleri=False,kullanici=itsme,timestamp=datetime.datetime.now(),tumgun=cd['tumgun'],url="")
                    isl_prog.save()
                    
                    return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab2")
                
                except Exception, e:
                
                    return render_to_response('worklist/404.html',{'err':e})
            
            else:
                
                return HttpResponse("<h1>erÖr 500 : invalid olduk !!!")
                
        
        elif '_save' in request.POST:
            
            if not bakimform.is_valid():
                
                bakim_id = request.GET.get('bakim_id')
                cihaz_initial = cihazlar.objects.filter(id=kayit_sno).values()[0]
                form = CihazlarForm(cihaz_initial)
                eform = EkCihazlarForm()
                #ekcihazlarini cek
                ekcihazlist = cihazlar.objects.filter(parent_id=kayit_sno)  
                #bakimform olustur bakalimmm
                my_cihaz=cihazlar.objects.get(id=kayit_sno)
                bakimlist=islistesi.objects.filter(turu__in= isturu.objects.filter(id__in=("4","6")),cihaz=my_cihaz).order_by('planlanan_bitis_tarihi')
                bakimtaslaklar = bakimtaslagi.objects.filter(ontanimli=True)         
                bakimtabloz = bakimtablosu.objects.filter(cihaz=my_cihaz) 
                
                #tab4 icin islistesini cekelim
                cihaz_islist = islistesi.objects.filter(cihaz=my_cihaz).exclude(turu__in=isturu.objects.filter(id__in=("4","6"))).order_by('timestamp')
                s = sabittablolar.objects.get(id=tanimlama_id)
                
                return render_to_response('worklist/tanimlama_form.html',{'cihazform':form,'ekcihazform':eform,'bakimform':bakimform,'bakimlist':bakimlist,'s':s,'bakim_id':bakim_id,'ekcihazlist':ekcihazlist,'bakimtaslaklar':bakimtaslaklar,'bakimtabloz':bakimtabloz,'cihaz_islist':cihaz_islist},context_instance=RequestContext(request))

            else:
            
                try:
                    bid = request.GET.get('bakim_id')
                    cd = bakimform.cleaned_data
                    bakim_ = islistesi.objects.get(id=int(bid))
                    bakim_.aciklama= cd['aciklama']
                    bakim_.turu = cd['turu']
                    bakim_.atolye = cd['atolye']
                    bakim_.tumgun=cd['tumgun']
                    bakim_.planlanan_baslangic_tarihi=cd['planlanan_baslangic_tarihi']
                    bakim_.planlanan_bitis_tarihi = cd['planlanan_bitis_tarihi']
                    
                    bakim_.save()
                    
                except Exception,e:
                    
                    return render_to_response('worklist/404.html',{'err':u"Acayip bir hata oldu: " + unicode(e)})
                
        else:
            return HttpResponse("<h1>erÖr 500 : acayip htat")
        
        return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab2")  

@permission_required('worklist.sabit_tanimlama')            
def tanimlamalar_program_sil(request,tanimlama_id,kayit_sno,bakim_id):
    
    tanimlama_id=str(tanimlama_id)
    
    try:
        bakimprog = islistesi.objects.get(id=bakim_id)
        xsay = bakimtablosu.objects.filter(islistesi=bakimprog).count()
        
        if xsay > 0:
            
            baglitablolar = bakimtablosu.objects.filter(islistesi=bakimprog)
            
            for bagz in baglitablolar:
                bagz.islistesi=None
                bagz.onaylandi= None
                bagz.save()
        
        bakimprog.delete()
        
        return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab2")  
        
    except Exception,e:
        
        return render_to_response('worklist/404.html',{'err':e})
            
   
def ajanda_olustur_json(request):
    jdict=[]
    
    xcid = request.GET.get('cid')
    xmonth = request.GET.get('month')
    xyear = request.GET.get('year')
    
    bakimlist=islistesi.objects.filter(turu__in= isturu.objects.filter(id__in=("4","6"))) 
 
    try:
        xcid = int(xcid)
        bakimlist = bakimlist.filter(cihaz= cihazlar.objects.get(id=xcid))
    except:
        None
    
    for bx in bakimlist:
        single_j={"id":bx.id,"title":bx.aciklama,"start":str(bx.planlanan_baslangic_tarihi),"end":str(bx.planlanan_bitis_tarihi),"url":"http://www.google.com","allDay":bx.tumgun}
        jdict.append(single_j)
    #[{"id":111,"title":"Event1","start":"2010-12-10 10:00:00","end":"2010-12-10 15:00:00","url":"http:\/\/yahoo.com\/","allDay":false},{"id":222,"title":"Event2","start":"2010-12-20","end":"2010-12-22","url":"http:\/\/yahoo.com\/"}]
    return HttpResponse(simplejson.dumps(jdict),content_type = 'application/javascript; charset=utf8')

@permission_required('worklist.sabit_tanimlama')
def ajanda_olustur(request):
    xcihazlar = cihazlar.objects.filter()
    xcid = request.GET.get('cid')
    
    #tarih kriteri varsa
    try:
        xmonth = int(request.GET.get('month'))
        xyear = int(request.GET.get('year'))
        
        xcalmonth = xmonth-1
    except:
        xmonth=None
        xyear=None
        xcalmonth=None
   
    xbugunmonth = datetime.date.today().month
    xbugunyear = datetime.date.today().year
    
    return render_to_response('worklist/ajanda.html',{'xcihazlar':xcihazlar,'xcid':xcid,'xmonth':xmonth,'xcalmonth':xcalmonth,'xbugunmonth':xbugunmonth,'xbugunyear':xbugunyear,'xyear':xyear},context_instance=RequestContext(request))


def ajanda_cihaz_getir_ajax(request):
    xcid = request.GET.get('cid')  
    #cihaz kriteri varsa
    if xcid:
        
        if xcid=="%":
            
            return HttpResponse(u"%")
                
        else:
        
            try:
                xcid = int(xcid)
                bakimlist = islistesi.objects.filter(turu__in= isturu.objects.filter(id__in=("4","6")))
                bakimlist = bakimlist.filter(cihaz= cihazlar.objects.get(id=xcid))
                
                if bakimlist:
                    xresponse = "<select onchange=\"donemgetir();\" name=\"donem\" id=\"id_donem\">"
                    #return HttpResponse(xresponse+"<option>skfjljlfs</option></select>")
                    for bakim in bakimlist:
                        #return HttpResponse(xresponse+"<option>"+str(bakim)+"</option></select>")
                        xresponse = xresponse + "<option value=\"?cid="+str(bakim.cihaz.id)+"&month="+str(bakim.planlanan_baslangic_tarihi.month)+"&year="+str(bakim.planlanan_baslangic_tarihi.year)+"\">"+unicode(bakim.aciklama).encode('UTF-8')+" - "+str(bakim.planlanan_baslangic_tarihi)+"</option>"
                    
                    xresponse = xresponse + "</select>"    
                    xresponse = xresponse + "<a href =\"javascript:void(0);\" onclick=\"donemgetir();\"><img title=\"Döneme git\" src=\"/media/img/admin/selector-add.gif\"></img></a>"
                    return HttpResponse(xresponse)
                
                else:
                    
                    return HttpResponse(u"<select><option>Kayıt bulunamadı</option></select>")
            
                    
            except Exception,e:
                return HttpResponse("err :"+e)

@permission_required('worklist.sabit_tanimlama')                    
def ajanda_guncelle_ajax(request):
    
    xisid = request.GET.get('isid')
    xtip = request.GET.get('tip')
    xgun = request.GET.get('gun')
    xdk = request.GET.get('dk')
    xtumGun = request.GET.get('tumGun')
    
    #tarih manipulasyonunu hazirlayalim
    xgundelta = datetime.timedelta(days=int(xgun))
    xdakikadelta = datetime.timedelta(minutes=int(xdk))
    
    try:
        #isimizi cekelim
        isl = islistesi.objects.get(id=xisid)
        
        #baslangic mi bitis mi?
        if xtip == "E":
            xbitis = isl.planlanan_bitis_tarihi
            #modifikasyonu yerlestir
            xbitis = xbitis + xgundelta
            xbitis = xbitis + xdakikadelta
            
            isl.planlanan_bitis_tarihi = xbitis
            
        
        elif xtip == "S":
            
            xbaslangic = isl.planlanan_baslangic_tarihi
            xbitis = isl.planlanan_bitis_tarihi
            #modifikasyon yerlestir
            xbaslangic = xbaslangic + xgundelta
            xbaslangic = xbaslangic + xdakikadelta
            
            xbitis = xbitis + xgundelta
            xbitis = xbitis + xdakikadelta
                        
            isl.planlanan_baslangic_tarihi = xbaslangic
            isl.planlanan_bitis_tarihi= xbitis
            
        if xtumGun=="E":
            
            isl.tumgun = True
        
        else:
            
            isl.tumgun = False
        
        isl.save()
            
        
            
        return HttpResponse(u"<font color=\"red\">Güncelleme başarılı</font>")
        
    except Exception,e:
        
        return HttpResponse(u"<font color=\"red\">Hata Oluştu: "+e+"</font>")
    
    
@permission_required('worklist.sabit_tanimlama')
def bakim_taslak_olustur(request):
    
    taslaklar = bakimtaslagi.objects.filter()
    bakimnodz = bakimnoktalari.objects.filter()
    return render_to_response('worklist/bakim_form.html',{'saveasform':"saveasform",'bakimnodz':bakimnodz,'taslaklar':taslaklar},context_instance=RequestContext(request))

@permission_required('worklist.sabit_tanimlama')    
def bakim_taslak_kaydet_yeni(request):
    #nodları al
    try:
        nod_idz = request.POST.getlist(u'node')
    except Exception,e:
        taslaklar = bakimtaslagi.objects.filter()
        bakimnodz = bakimnoktalari.objects.filter()
        return render_to_response('worklist/bakim_form.html',{'saveasform':"saveasform",'bakimnodz':bakimnodz,'taslaklar':taslaklar,'hata':u"Bakım noktası seçimlerinde hata oluştu: "+e},context_instance=RequestContext(request))

    
    if not nod_idz:
        taslaklar = bakimtaslagi.objects.filter()
        bakimnodz = bakimnoktalari.objects.filter()
        return render_to_response('worklist/bakim_form.html',{'saveasform':"saveasform",'bakimnodz':bakimnodz,'taslaklar':taslaklar,'hata':u"Bakım noktası seçilmemiş.. "},context_instance=RequestContext(request))

    #taslak aciklamasini al
    y_ack= request.POST['t_aciklama']
    
    if len(y_ack)<3:
        
        taslaklar = bakimtaslagi.objects.filter()
        bakimnodz = bakimnoktalari.objects.filter()
        return render_to_response('worklist/bakim_form.html',{'saveasform':"saveasform",'bakimnodz':bakimnodz,'taslaklar':taslaklar,'hata':u"Açıklama en az 10 karakter girilmelidir.. "},context_instance=RequestContext(request))
        
    
    try:
    #taslak olustur
        y_taslak = bakimtaslagi(aciklama=y_ack,ontanimli=True)
        y_taslak.save()
        
        #nodlari cek
        nodz = bakimnoktalari.objects.filter(id__in=nod_idz)
        #kayitlari olustur ve taslak ile bagla
        for n in nodz:
            xkayit = bakimkaydi(bakimnoktasi=bakimnoktalari.objects.get(id=n.id))
            xkayit.save()
            y_taslak.kayit.add(xkayit)
        
        return render_to_response('worklist/bakim_form.html',{'showform':"showform",'y_taslak':y_taslak},context_instance=RequestContext(request))
    
    except Exception,e:
        
        return HttpResponse(u"<font color=\"red\">Hata Oluştu: "+str(e)+"</font>")

@permission_required('worklist.sabit_tanimlama')
def bakim_taslak_kaydet(request,tanimlama_id):
    #nodları al
    try:
        nod_idz = request.POST.getlist(u'node')
    except Exception,e:
        taslaklar = bakimtaslagi.objects.filter()
        bakimnodz = bakimnoktalari.objects.filter()
        return render_to_response('worklist/bakim_form.html',{'saveasform':"saveasform",'bakimnodz':bakimnodz,'taslaklar':taslaklar,'hata':u"Bakım noktası seçimlerinde hata oluştu: "+e},context_instance=RequestContext(request))

    
    if not nod_idz:
        taslaklar = bakimtaslagi.objects.filter()
        bakimnodz = bakimnoktalari.objects.filter()
        return render_to_response('worklist/bakim_form.html',{'saveasform':"saveasform",'bakimnodz':bakimnodz,'taslaklar':taslaklar,'hata':u"Bakım noktası seçilmemiş.. "},context_instance=RequestContext(request))

    
    try:
        #taslagi_cek
        taslak = bakimtaslagi.objects.get(id=tanimlama_id)
        #eski bakimkayitlarini silelim laylay
        eski_kayitlar = taslak.kayit.all()
        eski_kayitlar.delete()
        
        #nodlari tekrar cekip yeni kayit
        nodz = bakimnoktalari.objects.filter(id__in=nod_idz)
        
        for n in nodz:
            xkayit = bakimkaydi(bakimnoktasi=bakimnoktalari.objects.get(id=n.id))
            xkayit.save()
            taslak.kayit.add(xkayit)
        
        return render_to_response('worklist/bakim_form.html',{'showform':"showform",'y_taslak':taslak},context_instance=RequestContext(request))
    
    except Exception, e:
        
        return HttpResponse(u"<font color=\"red\">Hata Oluştu: "+str(e)+"</font>")

@permission_required('worklist.sabit_tanimlama')
def bakim_taslak_degistir(request,tanimlama_id):
    #taslagi cekelim
    try:
        taslak_initial = bakimtaslagi.objects.get(id=tanimlama_id)
    except bakimtaslagi.DoesNotExist:
        return render_to_response('worklist/404.html',{'err':u"Taslak bulunamadı. Lütfen tekrar deneyiniz..(detaylar: )"})
    
    secilmis_nodz = bakimnoktalari.objects.filter(bakimkaydi__in=taslak_initial.kayit.all())
    diger_nodz = bakimnoktalari.objects.filter().exclude(bakimkaydi__in=taslak_initial.kayit.all())
    
    return render_to_response('worklist/bakim_form.html', {'taslakeditform': True,'secilmis_nodz':secilmis_nodz,'diger_nodz':diger_nodz,'taslak_initial':taslak_initial},context_instance=RequestContext(request))

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_bakimform_ekle(request,tanimlama_id,kayit_sno):
    tanimlama_id=str(tanimlama_id)
    itsme = MyUser.objects.get(id=request.user.id)
    
    tasid = request.GET.get('tasid')
    
    try:

        try:
            #taslagicekelim
            model_taslak= bakimtaslagi.objects.get(id=tasid)
        except Exception,e:
            xgerilink="/worklist/sabitler/"+str(tanimlama_id)+"/"+str(kayit_sno)+"/degistir/?git=tab3"
            return render_to_response('worklist/404.html',{'err':u"Taslak bulunamadı. Lütfen tekrar deneyiniz..(detaylar: )"+str(e),"gerilink":xgerilink})
        
        #taslakkopya olusturalim
        yeni_taslak = bakimtaslagi.objects.get(id=tasid)
        yeni_taslak.id= None
        yeni_taslak.ontanimli=False
        
        
        yeni_taslak.save()
        
        for modelkayit in model_taslak.kayit.filter():
            yenikayit = bakimkaydi(bakimnoktasi=bakimnoktalari.objects.get(id=modelkayit.bakimnoktasi.id))
            yenikayit.save()
            yeni_taslak.kayit.add(yenikayit)
        
        
        #aciklamayi olusturmak icin once cihaz adini cekelim yeah
        xcihaz = cihazlar.objects.get(id=kayit_sno)
        xaciklama = xcihaz.aciklama + " (" + xcihaz.demirbasno + u") cihazı " + str(datetime.date.today()) + u" tarihli bakım formu"
        bakimtab = bakimtablosu(aciklama=xaciklama,taslak=yeni_taslak,kullanici=itsme,timestamp=datetime.datetime.now(),cihaz=xcihaz)
        bakimtab.save()
        
                                    
        return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab3")
           
    except Exception, e:
            
        return render_to_response('worklist/404.html',{'err':e})

@permission_required('worklist.sabit_tanimlama')    
def tanimlamalar_bakimform_goster(request,tanimlama_id,kayit_sno,form_sno):
   
    try:
        xsil = request.GET.get('Sil')
        xcihaz = cihazlar.objects.get(id=kayit_sno)
        xtablo = bakimtablosu.objects.get(id=form_sno)
        xislistesi = islistesi.objects.filter(cihaz=xcihaz,turu__in= isturu.objects.filter(id__in=("4","6")))
        return render_to_response('worklist/bakim_form.html',{'tabloform':True,'cihaz':xcihaz,'islistesi':xislistesi,'tanimlama_id':tanimlama_id,'kayit_sno':kayit_sno,'tablo':xtablo,'Sil':xsil},context_instance=RequestContext(request))
    except Exception, e:
            
        return render_to_response('worklist/404.html',{'err':e})

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_bakimform_kaydet(request,tanimlama_id,kayit_sno,form_sno):
    
    try:
        xtablo = bakimtablosu.objects.get(id=form_sno)
        xtablo_ = bakimtablosu.objects.filter(id=int(form_sno))
        xcihaz = cihazlar.objects.get(id=kayit_sno)
        xislistesi = islistesi.objects.filter(cihaz=xcihaz,turu__in= isturu.objects.filter(id__in=("4","6")))
        #for kay in tablo.taslak.kayit.filter
        #name="{{kay.bakimnoktasi.id}}"
        
        if '_save' in request.POST:
        
            if not xtablo.onaylandi:
                
                try:
                    xtablo.islistesi = islistesi.objects.get(id=request.POST.get('islistesi'))
                except:
                    xtablo.islistesi = None
                    
                try:
                    
                    
                    xdateobj = datetime.datetime.strptime(str(request.POST.get('timestamp')),'%Y-%m-%d %H:%M:%S')
                    xtablo.timestamp = xdateobj
                    
                    xtablo.aciklama = xcihaz.aciklama + "(" + xcihaz.demirbasno + u") cihazı " + str(xdateobj.date()) + u" tarihli bakım formu"
                except Exception,e:
                    return render_to_response('worklist/bakim_form.html',{'tabloform':True,'islistesi':xislistesi,'cihaz':xcihaz,'tablo':xtablo,'tanimlama_id':tanimlama_id,'kayit_sno':kayit_sno,'hata':u"Hatalı Tarih biçimi! Ayrıntılar : ",'e':str(e),'dhata':"xXx",},context_instance=RequestContext(request))
            
                
                for kay in xtablo.taslak.kayit.filter():
                    
                    try:
                        
                        kay_value= request.POST[str(kay.bakimnoktasi.id)]
                    
                        xkayid=unicode(kay.bakimnoktasi.id)
                        
                        if kay_value=='gecti':
                        
                            kay.durum= True
                        
                        elif kay_value=='kaldi':
                            
                            kay.durum= False
                        
                        kay.eknot = request.POST.get(str(xkayid)+'-eknot')
                        
                        kay.save()
                    
                    except Exception,e:
                        return render_to_response('worklist/bakim_form.html',{'tabloform':True,'islistesi':xislistesi,'cihaz':xcihaz,'tablo':xtablo,'tanimlama_id':tanimlama_id,'kayit_sno':kayit_sno,'hata':u"Bakım noktalarının hepsinin doldurulması zorunludur! Ayrıntılar : ",'e':str(e)},context_instance=RequestContext(request))
        
            
            try:
                
                xtablo.onaylandi = request.POST.get('onaylandi')
                xtablo.save()
            
            except Exception ,e:
                
                return render_to_response('worklist/bakim_form.html',{'tabloform':True,'islistesi':xislistesi,'cihaz':xcihaz,'tablo':xtablo,'tanimlama_id':tanimlama_id,'kayit_sno':kayit_sno,'hata':e},context_instance=RequestContext(request))
        
        
        
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/bakimform/"+form_sno+"/goster/")
            #return render_to_response('worklist/bakim_form.html',{'tabloform':True,'cihaz':xcihaz,'tablo':xtablo},context_instance=RequestContext(request))
            
        
        elif '_raporla' in request.POST:
            
            resp = HttpResponse(mimetype='application/pdf')
            #xkayitlar_= xtablo.taslak.kayit.filter()
            #report = CihazRapor(queryset=cihaz_)
            #queryset = User.objects.order_by('username')
            report = bakimtablosuRapor(queryset=xtablo_)
            report.subreports=report.subreports_olustur()
            
            report.generate_by(PDFGenerator, filename=resp)
            
            return resp
            
    except Exception, e:
        
        return render_to_response('worklist/404.html',{'err':e})

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_bakimform_sil(request,tanimlama_id,kayit_sno,form_sno):
    try:
        xtablo = bakimtablosu.objects.get(id=form_sno)
        xtablo.taslak.delete()
        
        return render_to_response('worklist/bakim_form.html',{'silform':True},context_instance=RequestContext(request))
        
    except Exception,e:   
        return render_to_response('worklist/404.html',{'err':e})

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_belge_ekle(request,tanimlama_id,kayit_sno):
    tanimlama_id=str(tanimlama_id)
    itsme = MyUser.objects.get(id=request.user.id)
    
    if request.method == 'POST':
        
        documentform = DocumentForm(request.POST, request.FILES)
        
              
        if documentform.is_valid():

            cd = documentform.cleaned_data
            cihaz_ = cihazlar.objects.get(id=kayit_sno)

            try:
                                
                doc_ = Document(aciklama=cd['aciklama'],document=cd['document'],cihaz=cihaz_,kullanici=itsme,timestamp=datetime.datetime.now())
                doc_.save()
                
                return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
            
            except Exception, e:
            
                return render_to_response('worklist/404.html',{'err':e})
        
        else:
            
            return HttpResponse("<h1>erÖr 500 : invalid olduk !!!")

@permission_required('worklist.sabit_tanimlama')           
def tanimlamalar_belgeler_degistir(request,tanimlama_id,kayit_sno):
    tanimlama_id=str(tanimlama_id)
    #document nodlari al
    if '_coklusil' in request.POST:
        
        try:
            doc_idz = request.POST.getlist(u'node')
        except Exception,e:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
    
        if not doc_idz:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        try:
            #doclari_cek
            docz_ = Document.objects.filter(id__in=doc_idz)
            
            docz_.delete()
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        except Exception, e:
            
            return HttpResponse(u"<font color=\"red\">Hata Oluştu: "+str(e)+"</font>")
    
    elif '_tasi' in request.POST:
        
        
        try:
            doc_idz = request.POST.getlist(u'node')
            target_cihazlar = request.POST.getlist(u'cihaz')
        
        except Exception,e:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        target_cihazlar.remove('')
        
        if not doc_idz:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        if not target_cihazlar:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        try:
            #doclari_cek
            docz_ = Document.objects.filter(id__in=doc_idz)
            #target cihazi cek
            t_cihazlar = cihazlar.objects.filter(id__in=target_cihazlar)
            
            for t_cih in t_cihazlar:
                
                for doc in docz_:
                    
                    doc.cihaz = t_cih
                    doc.id = None
                    doc.save()
            
            
            #esas cihazdakini silelim simdi
            docz_.delete()
            
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        except Exception, e:
            
            return HttpResponse(u"<font color=\"red\">Hata Oluştu: "+str(e)+"</font>")
    
    elif '_kopyalatasi' in request.POST:
        
        
        try:
            doc_idz = request.POST.getlist(u'node')
            target_cihazlar = request.POST.getlist(u'cihaz')
        except Exception,e:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
       
        target_cihazlar.remove('')
        
        if not doc_idz:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        if not target_cihazlar:
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        
        
        try:
            
            #doclari_cek
            docz_ = Document.objects.filter(id__in=doc_idz)
            #target cihazi cek
            t_cihazlar = cihazlar.objects.filter(id__in=target_cihazlar)
            
            for t_cih in t_cihazlar:
                
                if not t_cih.id == int(kayit_sno): 
                    
                    for doc in docz_:
                        
                        doc.cihaz = t_cih
                        doc.id = None
                        doc.save() 
        
            return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")
        
        except Exception, e:
            
            return HttpResponse(u"<font color=\"red\">Hata Oluştu: "+str(e)+"</font>")
        
    
@permission_required('worklist.sabit_tanimlama')    
def tanimlamalar_coklu_belge_ekle(request):
    
    try:
    
        itsme = MyUser.objects.get(id=request.user.id)
       
        xcihazid = int(request.POST.get('cihazid'))
        xaciklama = unicode(request.POST.get('aciklama')).encode('UTF-8')
        cihaz_ = cihazlar.objects.get(id=xcihazid)
        
       
        if request.method == 'POST':
            
            for idx,field_name in enumerate(request.FILES):
                uploaded_file = request.FILES[field_name]
    
                # write the file into /tmp
                destination_path = settings.MEDIA_ROOT+'%s' % unicode(uploaded_file.name).encode('UTF-8')
                destination = open(destination_path, 'wb+')
                for chunk in uploaded_file.chunks():
                    destination.write(chunk)
                destination.close()
                
                doc_ = Document(aciklama=xaciklama,document='/media/uploads/'+uploaded_file.name,cihaz=cihaz_,kullanici=itsme,timestamp=datetime.datetime.now())
                doc_.save()
                
            # indicate that everything is OK for SWFUpload
            return HttpResponse("ok", mimetype="text/plain")
    
        else:
            # show the upload UI
            
            return render_to_response('worklist/404.html',{'err':'ne oldu aggggg'})
    
    except Exception,e:
        
        return render_to_response('worklist/404.html',{'err':e})
   
    return HttpResponseRedirect("/worklist/sabitler/2/"+xcihazid+"/degistir/?git=tab5")

@permission_required('worklist.sabit_tanimlama')
def tanimlamalar_belge_sil(request,tanimlama_id,kayit_sno,belge_id):
    
    tanimlama_id=str(tanimlama_id)
    
    try:
        document_ = Document.objects.get(id=belge_id)
        document_.delete()
        
        return HttpResponseRedirect("/worklist/sabitler/"+tanimlama_id+"/"+kayit_sno+"/degistir/?git=tab5")  
        
    except Exception,e:
        
        return render_to_response('worklist/404.html',{'err':e})    

def tanimlamalar_rapor_olustur(request,tanimlama_id,kayit_sno):
    resp = HttpResponse(mimetype='application/pdf')
    cihaz_ = cihazlar.objects.filter(id=kayit_sno)
    #report = CihazRapor(queryset=cihaz_)
    #queryset = User.objects.order_by('username')
    report = MasterReport(queryset=cihaz_)
    report.subreports=report.subreports_olustur()
    
    report.generate_by(PDFGenerator, filename=resp)
            
    return resp
    """try:
        resp = HttpResponse(mimetype='application/pdf')
        #cihaz_ = User.objects.filter(id=kayit_sno)
        #report = CihazRapor(queryset=cihaz_)
        queryset = User.objects.order_by('username')
        report = MasterReport(queryset=queryset)

        report.generate_by(PDFGenerator, filename=resp)
            
        return resp
    
    except Exception,e:
        return render_to_response('worklist/404.html',{'err':e}) """

       
def rapor_olustur(request):
    atol_kriter = atolyeler.objects.filter()
    lok_kriter = lokasyonlar.objects.filter()
    durum_kriter = is_durumlar.objects.filter()
    
    return render_to_response('worklist/rapor.html',{'kriterform':True,'atol_kriter':atol_kriter,'lok_kriter':lok_kriter,'durum_kriter':durum_kriter},context_instance=RequestContext(request))

def rapor_deneme(request):

    resp = HttpResponse(mimetype='application/pdf')
    
    try:
        #kriterleri al
        nod_onayz = request.GET.getlist(u'node_onay')
        k_atolye = request.GET.get("atolye")
        #atolye=1&lokasyon=3&durum=2&node_onay=1&node_onay=0&baslangic_tarihi=2011-01-10&bitis_tarihi=2011-01-12
        k_lokasyon = request.GET.get("lokasyon")
        k_durum = request.GET.get("durum")
        k_bas_tarih_str = request.GET.get("baslangic_tarihi")
        k_bit_tarih_str = request.GET.get("bitis_tarihi")
        
        xislistesi = islistesi.objects.filter().exclude(turu__in=isturu.objects.filter(id__in=("4","6"))).order_by('timestamp')
        
        if not k_lokasyon=="":
            xislistesi=xislistesi.filter(lokasyon__in=lokasyonlar.objects.filter(id=k_lokasyon))
        
        if not k_durum=="":
            
            xislistesi=xislistesi.filter(islem_durum__in=is_durumlar.objects.filter(id=k_durum))
        
        if not k_atolye=="":
            
            xislistesi=xislistesi.filter(atolye__in=atolyeler.objects.filter(id=k_atolye))
            
        if nod_onayz:
            
            if not nod_onayz.count(u"1"):
                xislistesi = xislistesi.exclude(onaylandi=True)
           
            if not nod_onayz.count(u"0"):
                xislistesi = xislistesi.exclude(onaylandi=False).exclude(onaylandi__exact=None)
            
        if not k_bas_tarih_str=="":
            
            xyear = int(k_bas_tarih_str.split("-")[0])
            xmonth = int(k_bas_tarih_str.split("-")[1])
            xday = int(k_bas_tarih_str.split("-")[2])
            
            try:
                xbasdate = datetime.date(xyear,xmonth,xday)
            
            except Exception,e:
                
                return render_to_response('worklist/rapor.html',{'errorform':True,"overwritemsg":"Geçersiz başlangıç tarihi girdiniz",'err':u"Detaylar (ing): "+str(e)})
                
            xislistesi=xislistesi.filter(timestamp__gte=xbasdate)
            
        if not k_bit_tarih_str=="":
                    
            xyear = int(k_bit_tarih_str.split("-")[0])
            xmonth = int(k_bit_tarih_str.split("-")[1])
            xday = int(k_bit_tarih_str.split("-")[2])
                
            try:
                xbitdate = datetime.date(xyear,xmonth,xday)
            
            except Exception,e:
                
                return render_to_response('worklist/rapor.html',{'errorform':True,"overwritemsg":"Geçersiz bitiş tarihi girdiniz",'err':u"Detaylar (ing): "+str(e)})
            
            xislistesi = xislistesi.filter(timestamp__lte=xbitdate)
        
        
        xsay = xislistesi.count()
        
        if xsay == 0:
            return render_to_response('worklist/rapor.html',{'errorform':True,"overwritemsg":u"Belirlediğiniz kriterlere uygun sonuçlar bulunamadı..",})
        
        report = islistesiRapor(queryset=xislistesi)
        report.generate_by(PDFGenerator, filename=resp)
        
        return resp

    except Exception,e:
        return render_to_response('worklist/rapor.html',{'errorform':True,'err':u"Detaylar (ing):"+str(e)})
        
def cihaz_rapor_olustur(request):
    islistesiform = islistesiForm()
    return render_to_response('worklist/rapor.html',{'cihazkriterform':True,'islistesiform':islistesiform,},context_instance=RequestContext(request))

def cihaz_rapor_goster(request):
    
    islistesiform = islistesiForm(request.GET)
    
    
    try:
        xlokasyon=int(request.GET.get('lokasyon'))
    except:
        return render_to_response('worklist/rapor.html',{'errorformcihaz':True,"overwritemsg":u"Lokasyon seçmediniz"})
    
    try:
        my_cihaz= cihazlar.objects.filter(id=int(request.GET.get('cihaz')))
        tek_cihaz=True
    except:
        tek_cihaz= False
        my_cihaz = cihazlar.objects.filter(lokasyon=lokasyonlar.objects.get(id=xlokasyon))
    
    if '_bakimlar' in request.GET:
       
        bakimlist = islistesi.objects.filter(turu__in= isturu.objects.filter(id__in=("4")),cihaz__in=my_cihaz).order_by('cihaz','planlanan_bitis_tarihi')
        
        if '_raporla' in request.GET:
            
            resp = HttpResponse(mimetype='application/pdf')
            report = bakimlistesiRapor(queryset=bakimlist)
            report.generate_by(PDFGenerator, filename=resp)
        
            return resp
        
        else:
            if tek_cihaz:
                my_cihaz=my_cihaz[0]
            
            return render_to_response('worklist/rapor.html',{'cihazkriterform':True,'islistesiform':islistesiform,'xlokasyon':xlokasyon,'tek_cihaz':tek_cihaz,'bakimlist':bakimlist,'my_cihaz':my_cihaz,'tur':'_bakimlar'},context_instance=RequestContext(request))
        
    if '_kalibrasyon' in request.GET:
       
        bakimlist = islistesi.objects.filter(turu__in= isturu.objects.filter(id__in=("6")),cihaz__in=my_cihaz).order_by('cihaz','planlanan_bitis_tarihi')
        
        if '_raporla' in request.GET:
            
            resp = HttpResponse(mimetype='application/pdf')
            report = bakimlistesiRapor(queryset=bakimlist)
            report.generate_by(PDFGenerator, filename=resp)
        
            return resp
        
        else:
            
            if tek_cihaz:
                my_cihaz=my_cihaz[0]
                
            return render_to_response('worklist/rapor.html',{'cihazkriterform':True,'islistesiform':islistesiform,'xlokasyon':xlokasyon,'tek_cihaz':tek_cihaz,'bakimlist':bakimlist,'my_cihaz':my_cihaz,'tur':'_kalibrasyon'},context_instance=RequestContext(request))
        
    if '_formlar' in request.GET:
        
        bakimlist = islistesi.objects.filter(cihaz__in=my_cihaz,id__in=bakimtablosu.objects.filter(islistesi__isnull=False).values_list('islistesi_id',flat=True)).order_by('cihaz','planlanan_bitis_tarihi')
        
        if '_raporla' in request.GET:
            
            resp = HttpResponse(mimetype='application/pdf')
            report = bakimlistesiRapor(queryset=bakimlist)
            report.generate_by(PDFGenerator, filename=resp)
        
            return resp
        
        elif '_bakimform_raporla' in request.GET:
            
            resp = HttpResponse(mimetype='application/pdf')
            #xkayitlar_= xtablo.taslak.kayit.filter()
            #report = CihazRapor(queryset=cihaz_)
            #queryset = User.objects.order_by('username')
            
            xcanvas=None
            xcount = 0
            for (counter, bx) in enumerate(bakimlist):
    
                xtablo=bakimtablosu.objects.filter(islistesi=bx)
                exec ('report'+str(int(xtablo[0].id))+'= bakimtablosucokluRapor(queryset=xtablo)')
                exec ('report'+str(int(xtablo[0].id))+'.subreports=report'+str(int(xtablo[0].id))+'.subreports_olustur()')
                #report = bakimtablosuRapor(queryset=xtablo)
                #report.subreports=report.subreports_olustur()
                if counter==0:
                    
                    exec ('xcanvas= report'+str(int(xtablo[0].id))+'.generate_by(PDFGenerator,filename=resp,return_canvas=True,)')
                    #xcanvas= report.generate_by(PDFGenerator,filename=resp,return_canvas=True,)           
                elif counter == len(bakimlist)-1: 
                    
                    exec ('report'+str(int(xtablo[0].id))+'.generate_by(PDFGenerator, canvas=xcanvas,filename=resp)')
                    
                else:
                    
                    exec ('xcanvas = report'+str(int(xtablo[0].id))+'.generate_by(PDFGenerator,filename=resp,canvas=xcanvas,return_canvas=True,)')
                    
                    #xcanvas = report.generate_by(PDFGenerator,filename=resp,canvas=xcanvas,return_canvas=True,)
                
                
            #exec ('form = '+ s.tablo_adi.capitalize() + 'Form()')
            #exec ('report'+xcount+'.generate_by(PDFGenerator, canvas=xcanvas,filename=resp)')
            #report.generate_by(PDFGenerator, canvas=xcanvas,filename=resp)
            
            return resp
            
            
        else:
            
            if tek_cihaz:
                my_cihaz=my_cihaz[0]
                
            return render_to_response('worklist/rapor.html',{'cihazkriterform':True,'islistesiform':islistesiform,'xlokasyon':xlokasyon,'tek_cihaz':tek_cihaz,'bakimlist':bakimlist,'my_cihaz':my_cihaz,'tur':'_formlar'},context_instance=RequestContext(request))
    
    return render_to_response('worklist/rapor.html',{'errorformcihaz':True,"overwritemsg":"Belirlediğiniz kriterlere uygun sonuçlar bulunamadı.."},context_instance=RequestContext(request))


def hastane_faturalar(request):

    fatlist = fatura.objects.filter()
    faturadetayform = FaturadetayForm()
    try:
        fat_id = int(request.GET.get('fat_id'))
        fatura_inst = fatura.objects.get(id=fat_id)
        faturaform = FaturaForm(instance=fatura_inst)
        fdetaylist = fatura_detay.objects.filter(fatura=fatura_inst)
        return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'fdetaylist':fdetaylist,'faturaeditform':faturaform,'faturadetayform':faturadetayform,'fat_id':fat_id},context_instance=RequestContext(request))
    
    except:
        fat_id=0
        faturaform = FaturaForm()
        return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'faturaform':faturaform,'faturadetayform':faturadetayform},context_instance=RequestContext(request))

def hastane_fatura_saveas(request):
    
    itsme = MyUser.objects.get(id=request.user.id)

    if request.method == 'POST':
        
        form = FaturaForm(request.POST)
        
        if not form.is_valid():
            
            fatlist = fatura.objects.filter()
            return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'faturaform':form,},context_instance=RequestContext(request))
                   
        else:
           
            cd = form.cleaned_data
            
            siradaki_sno = fatura.objects.filter().aggregate(Max('sno'))

            try:
                siradaki_sno = siradaki_sno['sno__max']+1
            except:
                siradaki_sno = 1
            
            
            try:
                                
                fatura_ = fatura(sno=siradaki_sno,aciklama=cd['aciklama'],fatura_no=cd['fatura_no'],fatura_tarih=cd['fatura_tarih'],cari=cd['cari'],fis_mi=False,kullanici=itsme,timestamp=datetime.datetime.now())    
                fatura_.save()
                
                return HttpResponseRedirect("/worklist/hastane/fatura")
            
            except Exception, e:
            
                return render_to_response('worklist/404.html',{'err':e})
      

    else:
        return HttpResponseRedirect("/worklist/hastane/fatura")

def hastane_fatura_edit(request,fat_id):
    
    itsme = MyUser.objects.get(id=request.user.id)

    if request.method == 'POST':
        
        form = FaturaForm(request.POST)
        
        if not form.is_valid():
            
            fatlist = fatura.objects.filter()
            return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'faturaform':form,},context_instance=RequestContext(request))
        
        else:
            
            try:
                cd = form.cleaned_data
                fatura_ = fatura.objects.get(id=fat_id)
                fatura_.aciklama=cd['aciklama']
                fatura_.fatura_no = cd['fatura_no']
                fatura_.fatura_tarih = cd['fatura_tarih']
                fatura_.cari = cd['cari']
                fatura_.kullanici= itsme
                fatura_.timestamp = datetime.datetime.now()
                
                fatura_.save()
                
            except Exception,e:
                
                return render_to_response('worklist/404.html',{'err':u"Acayip bir hata oldu: " + unicode(e)})
            
            
            if '_continue' in request.POST:
                               
                return HttpResponseRedirect("/worklist/hastane/fatura/?fat_id="+fat_id)
            
            return HttpResponseRedirect("/worklist/hastane/fatura/")

def hasta_fatura_detay_add(request,fat_id):
    
    itsme = MyUser.objects.get(id=request.user.id)
    fatura_ = fatura.objects.get(id=fat_id)
    
    if request.method=="POST":
        form = FaturadetayForm(request.POST)
        
        if not form.is_valid():
            
            fatlist = fatura.objects.filter()
            faturaeditform = FaturaForm(instance=fatura_)
            fdetaylist = fatura_detay.objects.filter(fatura=fatura_) 
            return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'faturaeditform':faturaeditform,'faturadetayform':form,'fdetaylist':fdetaylist,'fat_id':int(fat_id)},context_instance=RequestContext(request))
        
        else:
            
            try:
                
                cd = form.cleaned_data
                xtax_ratio = Decimal(cd['tax_ratio'])
                xprice = Decimal(str(cd['price']).replace(",", ""))
                
                xtax_total = xprice * (xtax_ratio/100)
                xprice_total = xprice + xtax_total
                
                fatura_detay_ = fatura_detay(fatura=fatura_,aciklama=cd['aciklama'],price=xprice,quantity=cd['quantity'],unit=cd['unit'],coefficient=1,tax_ratio=xtax_ratio,tax_total=xtax_total,price_total=xprice_total,cost_price=0,kullanici=itsme,timestamp=datetime.datetime.now())
                fatura_detay_.save()
                
                return HttpResponseRedirect("/worklist/hastane/fatura/?fat_id="+fat_id)
            
            except Exception,e:
                
                return render_to_response('worklist/404.html',{'err':e})
    else:
           
        return HttpResponseRedirect("/worklist/hastane/fatura/?fat_id="+fat_id)

def hasta_fatura_detay_show(request,fat_id,fatdetay_id):
    
    fatlist = fatura.objects.filter()
   
    try:
        
        fatura_inst = fatura.objects.get(id=fat_id)
        fatura_detay_inst = fatura_detay.objects.get(id=fatdetay_id)
        faturaform = FaturaForm(instance=fatura_inst)
        faturadetayform = FaturadetayForm(instance=fatura_detay_inst)
        fdetaylist = fatura_detay.objects.filter(fatura=fatura_inst)
        return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'fdetaylist':fdetaylist,'faturaeditform':faturaform,'faturadetayform':faturadetayform,'fat_id':int(fat_id),'fatdetay_id':int(fatdetay_id)},context_instance=RequestContext(request))
    
    except:
        fat_id=0
        faturaform = FaturaForm()
        return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'faturaform':faturaform,'faturadetayform':faturadetayform},context_instance=RequestContext(request))
    
def hasta_fatura_detay_save(request,fat_id,fatdetay_id):
    
    itsme = MyUser.objects.get(id=request.user.id)
   
    if request.method=="POST":
        form = FaturadetayForm(request.POST)
        
        if not form.is_valid():
            
            fatlist = fatura.objects.filter()
            fatura_ = fatura.objects.get(id=fat_id)
            faturaeditform = FaturaForm(instance=fatura_)
            fdetaylist = fatura_detay.objects.filter(fatura=fatura_) 
            return render_to_response('worklist/fatura.html',{'fatlist':fatlist,'faturaeditform':faturaeditform,'faturadetayform':form,'fdetaylist':fdetaylist,'fat_id':int(fat_id),'fatdetay_id':int(fatdetay_id)},context_instance=RequestContext(request))
        
        else:
            
            try: 
                cd = form.cleaned_data
                xtax_ratio = Decimal(cd['tax_ratio'])
                xprice = Decimal(str(cd['price']).replace(",", ""))
                
                xtax_total = xprice * (xtax_ratio/100)
                xprice_total = xprice + xtax_total
                
                fatura_detay_ = fatura_detay.objects.get(id=fatdetay_id)
                
                fatura_detay_.aciklama= cd['aciklama']
                fatura_detay_.price= xprice
                fatura_detay_.price_total = xprice_total
                fatura_detay_.quantity= cd['quantity']
                fatura_detay_.unit = cd['unit']
                fatura_detay_.tax_ratio = xtax_ratio
                fatura_detay_.tax_total = xtax_total
                fatura_detay_.kullanici=itsme
                fatura_detay_.timestamp=datetime.datetime.now()
                
                fatura_detay_.save()
            
            except Exception,e:
                
                return render_to_response('worklist/404.html',{'err':u"Acayip bir hata oldu: " + unicode(e)})
            
            
            return HttpResponseRedirect("/worklist/hastane/fatura/?fat_id="+fat_id)


def hastane_tuketim_goster(request):
    tuketimtablolari = tuketimtablosu.objects.filter()
    
    return render_to_response('worklist/tuketim_form.html',{'showform':'showform','tuketimtablolari':tuketimtablolari},context_instance=RequestContext(request))
    

def hastane_tuketim_olustur(request):
    
    tuketimnodz = tuketimnoktalari.objects.filter()
    tuketimform = TuketimtablosuForm()
    
    return render_to_response('worklist/tuketim_form.html',{'saveasform':'saveasform','tuketimnodz':tuketimnodz,'tuketimform':tuketimform},context_instance=RequestContext(request))

def hastane_tuketim_ekle(request):
    
    #nod_idz = request.POST.getlist(u'node')
    #y_ack= request.POST['t_aciklama']
    itsme = MyUser.objects.get(id=request.user.id)
    
    xtarih = request.POST['tarih']
    xaciklama = request.POST['aciklama']
    xfatura = request.POST['fatura']
    xonay = request.POST['onaylandi']
    xtuketim_node = request.POST['tuketimnoktasi']
    xtuketim_deger = request.POST['tuketim_deger']  
    
    #tabloyu olustur    
    tuketim_=tuketimtablosu(tarih=xtarih,aciklama=xaciklama,kullanici=itsme,timestamp=datetime.datetime.now())
    tuketim_.save()
    
    try:
        fatura_instance=fatura.objects.get(id=int(xfatura))
        tuketim_.fatura=fatura_instance
    except:
        None
    
    if xonay ==1 :
        tuketim_.onaylandi=True
    else:
        tuketim_.onaylandi=False
        
    
    try: 
        
        deci_xtuketim_deger = Decimal(str(xtuketim_deger).replace(",", ""))
    except:
        return HttpResponseRedirect("/worklist/hastane/tuketim/degistir/"+str(tuketim_.id)+"/")
    
    #kaydi olustur
    tuketim_kaydi_=tuketimkaydi(tuketimnoktasi=tuketimnoktalari.objects.get(id=xtuketim_node),deger=deci_xtuketim_deger)
    tuketim_kaydi_.save()
    
    tuketim_.kayit.add(tuketim_kaydi_)
   
    return HttpResponseRedirect("/worklist/hastane/tuketim/degistir/"+str(tuketim_.id)+"/")

def hastane_tuketim_degistir(request,tuketim_id):

    tuketim_ = tuketimtablosu.objects.get(id=tuketim_id)
    
    
    tuketimform = TuketimtablosuForm(instance=tuketim_)
    tuketimnodz = tuketimnoktalari.objects.filter()
    
    return render_to_response('worklist/tuketim_form.html',{'saveasform':'saveasform','tuketim_instance':tuketim_,'tuketim_id':tuketim_id,'tuketimnodz':tuketimnodz,'tuketimform':tuketimform},context_instance=RequestContext(request))

    
def cihaz_umdn_getir(request):   
    cihazadi = request.GET.get('cihazadi')
    
    try:
        detay = cihazlar.objects.filter(aciklama=cihazadi).values('demirbasno')
        xsay = detay.count()
        
        if xsay >0:
            
            resp_ = detay[0]['demirbasno'][4:9]
            return HttpResponse(resp_)
        
        else:
            return "99999"
    
    except:
        
        return "00000"
        
def email_yolla(request, **kwargs):
    #print kwargs
    try:
        #send_mail(kwargs['subject'],kwargs['body'], kwargs['fromuser'],['musafedakar@gmail.com'], fail_silently=False )
        send_mail(kwargs['subject'],kwargs['body'], kwargs['fromuser'],[kwargs['touser']], fail_silently=False )
        #send_mail('Subject here', 'Here is the message.', 'isistek@egesaglik.com.tr', ['musafedakar@gmail.com'], fail_silently=False)
    except Exception, e:
        
        print e.message or  "hata : " + str(e)
        
